package com.rongji.cms.tools.es.domain.entity;

import cn.easyes.annotation.HighLight;
import cn.easyes.annotation.IndexField;
import cn.easyes.annotation.IndexId;
import cn.easyes.annotation.IndexName;
import cn.easyes.annotation.rely.Analyzer;
import cn.easyes.annotation.rely.FieldType;
import cn.easyes.annotation.rely.IdType;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * @author yang
 * @date 2022/10/21 14:03
 * @description
 */
@Data
@Accessors(chain = true)
@IndexName(value = "search_cms_index", shardsNum = 3, replicasNum = 2, keepGlobalPrefix = true)
public class CmsArticle {

    /**
     * 文章id
     * es中的唯一id,如果你想自定义es中的id为你提供的id,比如MySQL中的id,请将注解中的type指定为customize或直接在全局配置文件中指定,如此id便支持任意数据类型)
     */
    @IndexId(type = IdType.CUSTOMIZE)
    private String id;


    /**
     * cms组别，暂时好像没啥有用
     */
    private String groupId;
    /**
     * 所属站点id
     */
    private String siteId;
    /**
     * 站点路径
     */
    private String sitePath;
    /**
     * 文章所属栏目路径
     */
    private String caPath;
    /**
     * 顶级栏目id
     */
    private String topCatalogId;
    /**
     * 所属栏目id
     */
    private String curcatalog;
    /**
     * 文章类型
     */
    private String arType;
    /**
     * 文章标题
     * 指定了类型及存储/查询分词器
     */
    @HighLight(mappingField = "highlightContent")
    @IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART)
    private String arTitle;
    /**
     * 文章副标题
     */
    private String arSubtitle;
    /**
     * 文章来源？
     */
    private String arSource;
    /**
     * 文章作者
     */
    private String arAuthor;
    /**
     * 文章摘要
     */
    private String arSummary;
    /**
     * 文章内容
     * 指定了类型及存储/查询分词器
     */
    @HighLight(mappingField = "highlightContent")
    @IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART)
    private String arContent;
    /**
     * 跳转链接
     */
    private String redirectUrl;
    /**
     * 文章链接
     */
    private String arUrl;
    /**
     * 创建者id
     */
    private String creatorId;
    /**
     * 创建时间
     */
    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis")
    private String createTime;
    /**
     * 部门id
     */
    private String deptId;
    /**
     * 发布时间
     */
    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private String publishTime;
    /**
     * 文章状态
     */
    private String status;
    /**
     * 文章模型
     */
    private String contentType;
    /**
     * 文章标签
     */
    private String arTags;
    /**
     * 文章扩展JSON字段
     */
    private String extJson;
    /**
     * 扩展字段1
     */
    private String ext1;
    /**
     * 扩展字段2
     */
    private String ext2;

    /**
     * 部门路径
     */
    private String deptPath;
    /**
     * 文章密级
     */
    private String secretLevel;
    /**
     * 文章公开范围
     */
    private String visualRange;
    /**
     * 定密期限
     */
    private String secretDueTime;
    /**
     * 公开范围域
     */
    private String visualOrg;

    /**
     * 高亮返回值被映射的字段
     */
    private String highlightContent;
}
